package core

// State 表示 Raft 节点的状态
// Follower, Candidate, Leader

type State int

const (
	Follower State = iota
	Candidate
	Leader
)

// Raft 是 Raft 协议的核心结构体
// 这里只定义基础字段，后续可扩展

type Raft struct {
	id       int        // 节点 ID
	state    State      // 当前节点状态
	term     int        // 当前任期号
	votedFor int        // 当前任期投票给谁
	log      []LogEntry // 日志条目
}

// LogEntry 表示日志条目

type LogEntry struct {
	Term    int
	Command interface{}
}

// RaftNode 定义 Raft 节点的基本接口

type RaftNode interface {
	Start(command interface{}) (index int, term int, isLeader bool)
	GetState() (term int, isLeader bool)
}
